using System;
using Sinacor.Servico.Bovespa.Ordens.BusinessEntity;
using Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response;
using Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator
{
    public static class TranslateBetweenOrdemMegaBolsaAndAlterarOrdemMegaBolsaResponse
    {
        public static Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.AlterarOrdemMegaBolsaResponse 
            TranslateOrdemMegaBolsaToAlterarOrdemMegaBolsaResponse(Sinacor.Servico.Bovespa.Ordens.BusinessEntity.OrdemMegaBolsa from)
        {
            Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.AlterarOrdemMegaBolsaResponse to = new Sinacor.Servico.Bovespa.Ordens.Service.DataContract.Response.AlterarOrdemMegaBolsaResponse();
            to.DataOrdem = from.DataOrdem;
            to.NumeroOrdem = from.NumeroOrdem;
            to.NumeroOrdemSubSequencia = from.NumeroOrdemSubSequencia;
            to.TipoLiquidacao = (DataContract.Enum.TipoLiquidacao) from.TipoLiquidacao;
            to.Carteira = from.Carteira;
            to.PercentualCorretagem = from.PercentualReducaoAcrescimo;
            to.IsValidacaoOk = from.IsValidacaoOk;
            to.IsAlteracaoOk = from.IsAlteracaoOk;
            to.ApelidoCliente = from.Cliente.Apelido;
            //translate manual 
            //de Sinacor.Servico.Bovespa.Comum.BusinessEntity.MensagemValidacao from.MensagemValidacaoSaldo{Codigo, Descricao}
            //para Ordens.Service.DataContract.Response.MensagemResponse to.MensagemValidacaoSaldo{Codigo, Descricao}
            if (from.MensagemValidacaoSaldo == null)
            {
                to.MensagemValidacaoSaldo = null;
            }
            else
            {
                to.MensagemValidacaoSaldo = new Ordens.Service.DataContract.Response.MensagemResponse();
                to.MensagemValidacaoSaldo.Codigo = from.MensagemValidacaoSaldo.Codigo;
                to.MensagemValidacaoSaldo.Descricao = from.MensagemValidacaoSaldo.Descricao;
            }
			if (from.Cliente.Bloqueio != null)
			{
				to.BloqueioCliente = Sinacor.Servico.Bovespa.Cliente.Service.ServiceImplementation.Translator
					.TranslateBetweenVerificarBloqueioClienteResponseAndBloqueioCliente
					.TranslateBloqueioClienteToVerificarBloqueioClienteResponse(from.Cliente.Bloqueio);
			}
            return to;
        }
    }
}

